package pr1.seleccion;

import java.util.List;

import pr1.AlgoritmoGenetico;
import pr1.cromosoma.Cromosoma;

public class Ruleta<E> implements EstrategiaSeleccion<E> {

    @Override
    public String getNombre() {
        return "Ruleta";
    }

    @Override
    public void seleccion(List<Cromosoma<E>> poblacion, List<Cromosoma<E>> seleccionados, AlgoritmoGenetico<E> algoritmoGenetico) {

    	int index = 0;
        double probabilidad;

        while(index < poblacion.size()) {
            probabilidad = Math.random();

            for (Cromosoma<E> c : poblacion) {
                double puntuacion = c.getPuntuacion();
                if (puntuacion >= probabilidad) {
                    seleccionados.get(index).copia(c);
                    index++;
                    break;
                } else {
                    probabilidad -= puntuacion;
                }
            }
        }

        assert(index == poblacion.size());
    }

    @Override
    public String toString() {
        return "Ruleta";
    }
}
